Computers have become highly integrated in the workforce, in the home, in mobile devices, and many other places. Computers can process massive amounts of information quickly and efficiently. Software applications designed to run on computer systems allow users to perform a wide variety of functions including business applications, schoolwork, entertainment and more. Software applications are often designed to perform specific tasks, such as word processor applications for drafting documents, or email programs for sending, receiving and organizing email.
In many cases, software applications are designed to interact with other software applications or other computer systems. For example, internet browsers allow users to send requests to other computer systems. These requests are answered by data servers, whose responses are transmitted over the internet back to the user. In many cases, websites provide and/or tailor their offerings to users that have been authenticated by the website. Users typically authenticate by entering some form of user name (possibly an email address) and a password or pass phrase. If the user enters the wrong credentials, login is prevented and an error message is returned.
To prevent illegitimate users from guessing or using dictionary attacks or other means of repeatedly trying passwords, throttles are implemented. These typically limit the user (or a particular internet protocol (IP) address) to a certain number of failed logins within a period of time (e.g. three failed login attempts within ten minutes). CAPTCHAS (Completely Automated Public Turing tests to tell Computers and Humans Apart) may also be used to prevent scripts or other automated systems from repeatedly guessing user name and password combinations. The CAPTCHAS require the user to view a partially distorted image and enter the word or sequence of characters displayed in the image. CAPTCHAS are designed to be easily decipherable by a human, but very difficult to decipher for a computer system.